package edificios;

import interfasesEdificio.GeneradorUnidades;
import colaDeProduccion.*;
import unidades.*;
import mapas.*;
import civilizacion.*;
import excepcionesGenerales.ExcepAtributoInvalido;
import excepcionesJugador.ExcepSinFondos;
public class FabricaMilitar extends Edificio implements GeneradorUnidades {
	
	public FabricaMilitar(Civilizacion cvl, Region rgn)throws NullPointerException{
		super(new ColaDeProduccUnidades());
		try{
			setCosto(25);
			setVidaMax(40);
			setVidaRestante(40);
			setTiempoDeConstruccion(5);
			construir();
			
			}catch(ExcepAtributoInvalido e){}
		setRegion(rgn);
		setCivilizacion(cvl);

	}
	/**
	 * Este metodo permite generar una unidad en la fabrica militar
	 * @throws ExcepSinFondos Si no se tienen fondos suficientes para fabricar
	 */
	public void generarUnidad() throws ExcepSinFondos{
		Unidad nuevaUnidad;
		nuevaUnidad = new Tanque(this.getCivilizacion(),this.getRegion());//creo la unidad
		try{
			getCivilizacion().Comprar(nuevaUnidad.getCoste());//lo compro
			this.getColaDeProduccion().agregarProducto(nuevaUnidad, nuevaUnidad.getTiempo());//lo agrego a la cola de produccion
			this.actualizarObservadores();
		}
		catch (ExcepAtributoInvalido e){}
	}
	public String toString(){
		String str = new String("Fab. Militar " );
		str += "     Vida: " + getVidaRestante() + "/" + getVidaMax();
		return str;
	}
	
	public String getNombre(){
		return "Fabrica Militar";
	}
}
